[MySQL] Wspólni znajomi
mam taką tabelę w bazie:
CREATE TABLE friends (
id int(11) NOT NULL auto_increment,
user1 int(11) NOT NULL COMMENT 'id usera 1 - zapraszajacego',
user2 int(11) NOT NULL COMMENT 'id usera 2 - zaproszonego',
status int(1) NOT NULL default '0' COMMENT '0 - niezaakceptowane, 1 - zaakceptowane',
data int(11) NOT NULL,
PRIMARY KEY (id),
KEY id (user1,user2,status,data)
)
W tej tabeli przechowuję listę relacji ze znajomymi (user1 - mój id, user2 - id znajomego)
A tutaj mam zapytanie wyciągające wspólnych znajomych moich i znajomego:
SET @user = 2; @znajomy = 921;
SELECT
IF(f1.user1 = @user, f1.user2, f1.user1) AS user_id
FROM
friends AS f1
WHERE
(f1.user1 = @user OR f1.user2 = @user) AND
f1.status = 1
AND
IF(f1.user1 = @user, f1.user2, f1.user1)
IN (
SELECT
IF(f2.user1 = @user, f2.user2, f2.user1)
FROM
friends AS f2
WHERE
(f2.user1 = @znajomy OR f2.user2 = @znajomy) AND
f2.status = 1
)
HAVING
user_id != @znajomy;
Potrzebuje pomoc w wymyśleniu jakiegoś krótszego i optymalnego zapytania. Widziałem tutaj kilka prostych zapytań, jednak nie działają...
Proszę o pomoc, pozdrawiam